<!doctype html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>Template • TodoMVC</title>
		<link rel="stylesheet" href="node_modules/todomvc-common/base.css">
		<link rel="stylesheet" href="node_modules/todomvc-app-css/index.css">
		<!-- CSS overrides - remove if you don't need it -->
		<link rel="stylesheet" href="css/app.css">
	</head>
	<body>
		<section class="todoapp" id="todoapp">
		<header class="header">
		<h1>todos</h1>
			<!-- 麻烦 需要自己判断keyCode -->
			<!-- <input class="new-todo" placeholder="What needs to be done?" 
			@keydown="addTodo" > -->
			<!-- @keyup.13 -->
			<!--autofocus 注册自定义指令-->
			<input class="new-todo" 
		    placeholder="What needs to be done?" 
			@keyup.enter="addTodo" 
			v-focus
			>
			<!-- v-model="todoText" -->
		</header>
			<!-- 当需要条件控制渲染多个元素的时候，
				 可以把他们都放到template标签中，vue会识别，
				 在渲染的结果中不会包含template这个节点
			 -->
			<template v-if='todos.length'>
				<section class="main" id="todoapp"  >
				<input id="toggle-all"
				 class="toggle-all"
				  type="checkbox"
				  v-model="toggoleComputed"
				  @click="toggleAll"
				  >
				<label for="toggle-all">Mark all as complete</label>
				<ul class="todo-list">
					<!-- 未完成状态：不需要样式
						   完成状态：completed
						   编辑状态：editing
						   v-bind:class="{类名：布尔值}"
						   当布尔值为true的时候，则作用这个类名
						   当布尔值为false的时候，则去除这个类名
					 -->
					 <!--
						 双击获得任务项 editing 样式：
						  这里使用一个中间变量，默认为Null,所有任务项都没有editing样式
						  那editing的样式取决去中间变量：currentEditing 中间变量是等于当前任务项
						  所以，当双击的时候，就手动讲currentEditing = 当前我双击的任务数
						  那这个时候，样式判定条件item === currentEdting成立，成立做作用了这个样式。
					 -->
					<li 
					v-for="(item,index) of filterTodos" 
					v-bind:class="{completed:item.completed,editing:item === currentEditing}">
						<div class="view">
						<input 
						class="toggle"
						type="checkbox"
						v-model="item.completed"
						
						>
						<!--双击事件-->
							<label 
							@dblclick="currentEditing = item">{{item.title}}</label>

							<!--手动传入参数，$event-->
							<button 
							class="destroy"
							@click="removeTode(index,$event)"
							></button>
						</div>
						<input 
						 class="edit"
						 :value="item.title"
						 @blur="saveEdit(item,index,$event)"
						 @keyup.esc="currentEditing = null"
						 @keyup.enter ="saveEdit(item,index,$event)"
						 >
					</li>
					
					<!-- <li>
						<div class="view">
							<input class="toggle" type="checkbox">
							<label>Buy a unicorn</label>
							<button class="destroy"></button>
						</div>
						<input class="edit" value="Rule the web">
					</li> -->
				</ul>
			</section>
			<!-- This footer should hidden by default and shown when there are todos -->
			<footer  class="footer">
				<!-- This should be `0 items left` by default -->
				
				<!--在模板绑定中也可以调用函数，函数的返回值将被渲染到这里
					同样的，如果函数中具有依赖的data成员，一旦发成变化，则函数会重新计算得到最新结果。
					也就是说这也是响应式的。
					严谨一点的说法，绑定函数所在的视图模板如果更新，则该函数也会重新执行。

					计算属性和方法：
					都可以达到同样的效果。
					- 如果是方法，则一旦方法所在的视图发生变化，则方法一定会重新执行
					- 方法没有缓存，也就是说多次使用该方法，则会重复执行多次
					- 计算属性会依赖于内部data中的数据，如果数据没变，则数据属性不会重新执行
					- 所以相比来说，计算属性要比方法更为高效一些。
				-->
				<span class="todo-count"><strong>{{ leftCount }}</strong> item left</span>
				<!-- Remove this if you don't implement routing -->
				<ul class="filters" v-auto-active>
					<li>
						<a :class="{selected:filterStat==='all'}" href="#/">All</a>
					</li>
					<li>
						<a :class="{selected:filterStat==='active'}" href="#/active">Active</a>
					</li>
					<li>
						<a :class="{selected:filterStat==='completed'}" href="#/completed">Completed</a>
					</li>
				</ul>
				<!-- Hidden if no completed items are left ↓ -->
				<!--删除已完成-->
				<button class="clear-completed"
				@click="removeAllDone"
				>Clear completed</button>
			</footer>
			</template>

		</section>
		<footer class="info">
			<p>Double-click to edit a todo</p>
			<!-- Remove the below line ↓ -->
			<p>Template by <a href="http://sindresorhus.com">Sindre Sorhus</a></p>
			<!-- Change this out with your name and url ↓ -->
			<p>Created by <a href="http://todomvc.com">you</a></p>
			<p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
		</footer>
		<!-- Scripts here. Don't remove ↓ -->
		<script src="node_modules/todomvc-common/base.js"></script>
		<script src="node_modules/vue/dist/vue.js" type="text/javascript"></script>
		<script src="js/app.js"></script>
	</body>
</html>
